<?php

/**
 * Servicio
 * @Servicio
 * GenProg Lenguaje de Modelos
 *
 *
 * @author      Carlos Peña <crash.madover@gmail.com>
 * @package     application.model.sis.nomina
 * @copyright   (c) 2013, GenProg
 * @version     v 1.0
 */
class Oficina {
  // -------------------------------------------------------------------------------------

  /**
   * Prefijo de los Campos
   *
   * @access    public
   * @var       string
   */
  public $prefijo = 'OFI';

  // -------------------------------------------------------------------------------------

  /**
   * Nombre de la Tabla en la Base de Datos
   *
   * @access    public
   * @var       string
   */
  public $tabla = 'K_TOficina';

  // -------------------------------------------------------------------------------------

  /**
   * Nacionalidad
   * 
   * @access public
   * @var array()
   */
  public $naci = array('J' => 'Juridico', 'G' => 'Gubernamental');

  // -------------------------------------------------------------------------------------

  /**
   * Campos del Sistema y Base de datos
   *
   * @access    public
   * @var       array()
   */
  public $struc = array(//
    'cmp' => array(//
      'oid' => array('clave' => 'KEY', 'tipo' => 'INT', 'longitud' => '2', 'incremento' => 1, 'comentario' => 'Identificador de la Oficina', 'visible' => 'oculto'), //            
      'oidFKC' => array('clave' => 'KEY', 'tipo' => 'INT', 'longitud' => '11', 'comentario' => 'Ciudad', 'visible' => 'oculto',
        'clave_foranea' => array('ciudad', 'oid')
      ), //
      'oidFKP' => array('clave' => 'KEY', 'tipo' => 'INT', 'longitud' => '11', 'comentario' => 'Parroquia', 'visible' => 'oculto',
        'clave_foranea' => array('parroquia', 'oid')
      ),
      'tipo' => array('tipo' => 'VARCHAR', 'longitud' => 1, 'combo' => 'naci', 'comentario' => 'Tipo de Responsable'), //
      'ced_rif' => array('tipo' => 'VARCHAR', 'longitud' => 255, 'comentario' => 'Registro Informacion Fiscal'), //
      'nombre_razon' => array('tipo' => 'TEXT', 'comentario' => 'Nombre o Razon Social'), //
      'direccion' => array('tipo' => 'TEXT', 'comentario' => 'Direccion Completa'), //
      'sele' => array('tipo' => 'INT', 'longitud' => '1', 'comentario' => 'Tipo de Oficina'), //    
      'codigo' => array('tipo' => 'VARCHAR', 'longitud' => '64', 'comentario' => 'Codigo Por Sucursal'), //
      'tele' => array('tipo' => 'VARCHAR', 'longitud' => '64', 'comentario' => 'Telefono'), //
      'celu' => array('tipo' => 'VARCHAR', 'longitud' => '64', 'comentario' => 'Celular'), //
    ),
    'join' => array(//
      'ciudad' => array('oid' => 'oidFKC', 'relacion' => 'uno-a-uno', 'dtd' => 'Ciudad'),
      'parroquia' => array('oid' => 'oidFKP', 'relacion' => 'uno-a-uno', 'dtd' => 'Parroquia'),
    )
  );

  // -------------------------------------------------------------------------------------

  /**
   * Descripcion del modelo
   * 
   * @access    public
   * @var       string
   */
  public $dtd = 'Lista de Servicios';

  // -------------------------------------------------------------------------------------

  /**
   * Permite crear botones asignados a la Interfaz
   * C = Crear, R = Leer (Buscar), U = Actualizar (Modificar), D = Eliminar
   *
   * @access public
   * @var string
   */
  public $botones = 'CRUD';

  function Insertar(Orm $orm = null, $arr = array()) {
    
  }

  /**
   * Generar Interfaz grafica de Usuario
   * 
   * @return Object
   */
  public function GUI(Orm $Orm = null) {
    $estado = array();
    if (isset($Orm)) {
      $rs = $Orm->GPQL('Estado')->Asignar_Columnas('Estado.oid AS oid,Estado.nomb AS nomb')->Listar_Todo()->Ejecutar();
      foreach ($rs['rs'] as $sC => $sV) {
        $estado[$sV->oid] = $sV->nomb;
      }
    }
    $mun_parr = array('' => 'Seleccione Parroquia');
    $tipo = array('0' => 'Seleccione Tipo', '1' => 'Receptoria', '2' => 'Agente Autorizado', '3' => 'Aliado Comercial');

    $frm[1] = array('etiqueta' => 'Tipo', 'id' => 'OFI_sele', 'tipo' => 'combo', 'elementos' => $tipo, 'requerido' => 1, 'estilo' => 'width:210px');
    $frm[2] = array('etiqueta' => 'Iden', 'id' => 'OFI_oid', 'tipo' => 'texto', 'clave' => 'index', 'oculto' => 1, 'estilo' => 'width:300px');
    $frm[3] = array('etiqueta' => 'Tipo de Cuenta', 'id' => 'OFI_tipo', 'tipo' => 'combo', 'clase' => 'icon1', 'requerido' => 1, 'elementos' => $this->naci, 'estilo' => 'width:300px');
    $frm[4] = array('etiqueta' => 'Registro de Informacion Fiscal', 'id' => 'OFI_ced_rif', 'tipo' => 'numero', 'clase' => 'icon1', 'requerido' => 1, 'onblur' => 'Consultar_Oficina()', 'estilo' => 'width:210px');
    $frm[5] = array('etiqueta' => 'Codigo Sucursal', 'id' => 'OFI_codigo', 'tipo' => 'texto', 'clase' => 'icon1', 'estilo' => 'width:300px');

    $frm[6] = array('etiqueta' => 'Nombre Completo o Razón Social', 'id' => 'OFI_nombre_razon', 'tipo' => 'textarea', 'estilo' => 'width:510px');

    // ----------------------------------------------------------------------------

    $frm[7] = array('etiqueta' => 'Ciudad', 'id' => 'ciudad', 'tipo' => 'texto', 'completar' => 'CCiudad', 'onblur' => 'SCiudad()', 'requerido' => 1, 'estilo' => 'width:210px');
    $frm[8] = array('etiqueta' => 'Estado', 'id' => 'estado', 'tipo' => 'combo', 'elementos' => $estado, 'dependiente' => array("municipio", "CConsultar/Municipio"), 'requerido' => 1, 'estilo' => 'width:300px');
    $frm[9] = array('etiqueta' => 'Municipio', 'id' => 'municipio', 'tipo' => 'combo', 'elementos' => $mun_parr, 'requerido' => 1, 'dependiente' => array("OFI_oidFKP", "CConsultar/Parroquia"), 'estilo' => 'width:210px');
    $frm[10] = array('etiqueta' => 'Parroquia', 'id' => 'OFI_oidFKP', 'tipo' => 'combo', 'elementos' => $mun_parr, 'requerido' => 1, 'estilo' => 'width:300px');
    $frm[11] = array('etiqueta' => 'Codigo Postal', 'id' => 'zona_postal', 'tipo' => 'texto', 'clase' => 'icon1');

    $frm[12] = array('etiqueta' => 'Teléfono', 'id' => 'OFI_tele', 'tipo' => 'texto', 'clase' => 'icon1', 'estilo' => 'width:300px');
    $frm[13] = array('etiqueta' => 'Celular', 'id' => 'OFI_celu', 'tipo' => 'texto', 'clase' => 'icon1', 'estilo' => 'width:210px');

    $frm[14] = array('etiqueta' => 'Descripcion de la Direccion', 'id' => 'OFI_direccion', 'tipo' => 'textarea', 'estilo' => 'width:510px');

    $frm[15] = array('etiqueta' => 'Iden Ciudad', 'id' => 'OFI_oidFKC', 'tipo' => 'numero', 'oculto' => 1);

    $btn[1] = array('etiqueta' => 'Guardar o Modificar', 'metodo' => 1, 'tipo' => 'submit');
    $obj['php'] = array('campos' => $frm, 'titulo' => 'Registro de Oficina', 'botones' => $btn, 'fguardar' => 'SalvarOActualizar');
    $obj['json'] = json_encode($obj['php']);
    return (object) $obj;
  }

  function LOficinas(Orm $orm = null, $arr = array()) {
    $i = 0;
    $oCab = array();
    $oFil = array();
    $oCab[1] = array("titulo" => "oid", "atributos" => "width:60px", "oculto" => 1);
    $oCab[2] = array("titulo" => "oid_ciu", "atributos" => "width:60px", "oculto" => 1);

    $oCab[3] = array("titulo" => "oid_parr", "atributos" => "width:60px", "oculto" => 1);
    $oCab[4] = array("titulo" => "Codigo", "atributos" => "width:60px");
    $oCab[5] = array("titulo" => "Ciudad", "atributos" => "width:100px");
    $oCab[6] = array("titulo" => "Razon Social", "atributos" => "width:200px");
    $oCab[7] = array("titulo" => "Direccion", "atributos" => "width:270px");
    $oCab[8] = array("titulo" => "Teléfono", "atributos" => "width:100px");
    $oCab[9] = array("titulo" => "Tipo", "atributos" => "width:120px");

    $oCab[10] = array(//
      'titulo' => "#",
      'mantiene' => 1, // Que la fila no se elimine
      'tipo' => 'enlace', //Ruta Imagen
      'parametro' => '1',
      'metodo' => 2,
      'taget' => '_top',
      'ruta' => IMG . 'aceptar.png',
      'funcion' => 'GUI/Oficina',
      "atributos" => "width:20px"
    );

    $oCab[11] = array(//
      'titulo' => '#',
      'tipo' => 'bimagen', //Ruta Imagen
      'metodo' => 2,
      'parametro' => '11',
      'ruta' => IMG . 'cancelar.png',
      'funcion' => 'Eliminar_Oficina',
      'atributos' => "width:8px"
    );
    $oCab[12] = array("titulo" => "Responsable", "atributos" => "width:160px", "oculto" => 1);
    if (isset($orm)) {
      $sClav = '!=';
      if ($arr['oid'] != 0)
        $sClav = '=';
      $rs = $orm->GPQL('Oficina')->Donde_Columnas('OFI_oidFKC ' . $sClav . $arr['oid'])->Listar_Donde()->Ejecutar();



      foreach ($rs['rs'] as $sC => $sV) {
        $sele = '';
        $orm->GPQL()->Limpiar_Cache();
        
        $aCiudad['CIU_oid'] = $sV->OFI_oidFKC;
        $Ciudad = $orm->GPQL()->ObtenerID($aCiudad, FALSE);

        switch ($sV->OFI_sele) {
          case 1:
            $sele = 'Receptoria';
            break;
          case 2:
            $sele = 'Agente Autorizado';
            break;
          case 3:
            $sele = 'Aliado Comercial';
            break;
          default :
            $sele = 'Oficina';
            break;
        }
        if ($sV->OFI_sele == 1)
          $sele = 'Receptoria';
        if ($sV->OFI_sele == 2)
          $sele = 'Agente Autorizado';
        $oFil[++$i] = array(//
          '1' => $sV->OFI_oid,
          '2' => $sV->OFI_oidFKC, // Responsable
          '3' => $sV->OFI_oidFKP,
          '4' => $sV->OFI_codigo,
          '5' => $Ciudad->nomb, // $sV->OFI_tipo . '-' . $sV->OFI_ced_rif,
          '6' => $sV->OFI_nombre_razon,
          '7' => $sV->OFI_direccion,
          '8' => $sV->OFI_tele,
          '9' => $sele,
          '10' => '',
          '11' => '',
          '12' => $sV->OFI_ced_rif,
        );
      }
    }

    $contratos = array("Cabezera" => $oCab, "Cuerpo" => $oFil, "Origen" => "json", "titulo" => "Listar Oficinas");
    return json_encode($contratos);
  }

}

?>
